//#include <iostream>
//#include <algorithm>
//#include <string>
//using namespace std;
//
//int main() {
//    string s;
//    cin >> s;
//    int sum = 1e9;  // 将sum变量定义在main函数中，避免全局变量的使用
//    for (int i = 0; i < s.size(); i++) {
//        // 以s[i]为中心的回文子串
//        int left = i, right = i;
//        while (left >= 0 && right < s.size() && s[left] == s[right]) {
//            int length = right - left + 1;
//            if (length > 1) {
//                sum = min(sum, length);
//            }
//            --left;
//            ++right;
//        }
//        // 以s[i]和s[i+1]为中心的回文子串
//        left = i;
//        right = i + 1;
//        while (left >= 0 && right < s.size() && s[left] == s[right]) {
//            int length = right - left + 1;
//            if (length > 1) {
//                sum = min(sum, length);
//            }
//            --left;
//            ++right;
//        }
//    }
//    if (sum != 1e9) {
//        cout << sum;
//    }
//    else {
//        cout << -1;
//    }
//    return 0;
//}

//#include <iostream>
//#include <vector>
//using namespace std;
//
//int main() {
//    int n;
//    cin >> n;
//    vector<int> vc(n);
//    vector<int> dp(n + 1);
//    for (int i = 0; i < n; i++) {
//        cin >> vc[i];
//    }
//    dp[0] = vc[0];
//    if (n > 1) {
//        dp[1] = max(vc[0], vc[1]);
//    }
//    for (int i = 2; i < n; i++)
//    {
//        dp[i] = max(dp[i - 1], dp[i - 2] + vc[i]);
//    }
//    cout << dp[n - 1];
//    return 0;
//}

#include <iostream>
#include <algorithm>
#include <vector>
#include <math.h>
using namespace std;

int main() {
    int n, p;
    cin >> n >> p;
    vector<int> vc(n);
    for (int i = 0; i < n; i++) {
        cin >> vc[i];
    }
    sort(vc.begin(), vc.end());

    int left = 0;
    int right = 0;
    int max_count = 0;

    while (right < n) {
        // 扩展窗口，直到窗口内的元素不再满足条件
        while (right < n && vc[right] - vc[left] <= 2 * p) {
            right++;
        }
        // 更新最大值
        max_count = max(max_count, right - left);
        // 移动left指针，缩小窗口
        left++;
    }

    cout << max_count;
    return 0;
}